package com.unknowpupil.web.utils;

import com.unknowpupil.web.base.entity.Address;
import com.unknowpupil.web.component.wallet.utils.HttpUtil;
import jnr.ffi.Struct;
import org.apache.commons.lang3.StringUtils;
import tk.mybatis.mapper.common.Mapper;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;

/**
 * @Classname: GetAddressByIp
 * @Author: <a> w10g </a>
 * @CreateDate: Create in 2019/11/5 11:35
 * @Description:
 * @Version: 1.0
 */
public class GetAddressByIp {
    /**
     *
     * @param IP
     * @return
     */
    public static Address GetAddressByIp(String IP){
        try{
            String str = HttpUtil.get("http://ip.taobao.com/service/getIpInfo.php?ip=" + IP);
            System.out.println(str);
            if(StringUtils.isNotBlank(str)){
                Map<String, Object> map = MapperUtils.json2map(str);

                if("0".equals(map.get("code").toString())){
                    return MapperUtils.json2pojo(MapperUtils.obj2json(map.get("data")),Address.class);
                }else {
                    return null;
                }
            }
        }catch(Exception e){

            e.printStackTrace();
//            resout = "获取IP地址异常："+e.getMessage();
        }
        return null;
    }
/**
 *  下端代码不用，可简介，流转json
 */

    public static String getJsonContent(String urlStr)
    {
        try
        {// 获取HttpURLConnection连接对象
            URL url = new URL(urlStr);
            HttpURLConnection httpConn = (HttpURLConnection) url
                    .openConnection();
            // 设置连接属性
            httpConn.setConnectTimeout(3000);
            httpConn.setDoInput(true);
            httpConn.setRequestMethod("GET");
            // 获取相应码
            int respCode = httpConn.getResponseCode();
            if (respCode == 200)
            {
                return ConvertStream2Json(httpConn.getInputStream());
            }
        }
        catch (MalformedURLException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return "";
    }
    private static String ConvertStream2Json(InputStream inputStream)
    {
        String jsonStr = "";
        // ByteArrayOutputStream相当于内存输出流
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        // 将输入流转移到内存输出流中
        try
        {
            while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
            {
                out.write(buffer, 0, len);
            }
            // 将内存流转换为字符串
            jsonStr = new String(out.toByteArray());
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return jsonStr;
    }
}
